package com.tiancheng.trade.settlement.vo.settlement.api;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * @Auther: tiger
 * @Date: 2024/4/27 15:03
 * @Param ${tags}
 * @Description:清分账单数据明细
 */
@Setter
@Getter
@ToString
public class SettlementBillDetailVO {


    protected Long id;
    /**
     * 清分日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @JsonProperty("should_clear_date")
    private LocalDate shouldClearDate;

    /**
     * 费用类型：PL-平台应收，ME-商户应收，CU-营销金额，SC-手续费
     */
    @JsonProperty("cost_type")
    private String costType;

    /**
     * 状态（0-对账成功，1-对账失败，2-我方有银行无，3-银行有我方无）
     */
    @JsonProperty("status")
    private String status;

    /**
     * 是否新系统数据 0-是，1-否
     */
    @JsonProperty("system_data_flag")
    private String systemDataFlag;

    /**
     * 费用类型：PL-平台应收，ME-商户应收，CU-营销金额，SC-手续费
     */
    @JsonProperty("cost_type_name")
    private String costTypeName;

    /**
     * 主订单号
     */
    @JsonProperty("order_id")
    private String orderId;

    /**
     * 子订单号
     */
    @JsonProperty("sub_order_id")
    private String subOrderId;

    /**
     * 商户号
     */
    @JsonProperty("sub_mch_id")
    private String subMchId;

    /**
     * 商品名称
     */
    @JsonProperty("product_name")
    private String productName;

    /**
     * 付款账户名
     */
    @JsonProperty("pay_acct_name")
    private String payAcctName;

    /**
     * 收款账户名
     */
    @JsonProperty("col_acct_name")
    private String colAcctName;

    /**
     * 清分金额
     */
    @JsonProperty("clear_amount")
    private Integer clearAmount;

    /**
     * 招行订单号
     */
    @JsonProperty("bank_order_id")
    private String bankOrderId;

    /**
     * 银行侧清分金额
     */
    @JsonProperty("bank_clear_amount")
    private Integer bankClearAmount;

    /**
     * 订单日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonProperty("pay_time")
    private LocalDateTime payTime;

    /**
     * 核销日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonProperty("verified_time")
    private LocalDateTime verifiedTime;

    /**
     * 对账日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonProperty("bill_date")
    private LocalDateTime billDate;

    /**
     * 对账完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonProperty("complete_date")
    private LocalDateTime completeDate;

    /**
     * 差异金额
     */
    @JsonProperty("error_amount")
    private Integer errorAmount;

    /**
     * 差异原因
     */
    @JsonProperty("error_remark")
    private String errorRemark;

    /**
     * 对账次数
     */
    @JsonProperty("bill_count")
    private Integer billCount;

}
